
/**
 * Created by Zhao Bo En on 2018/01/02.
 */

//日期转换
Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}
var PfMonth = null;

$(function () {
    //$.ajaxSettings.async = false;
    dateTiemSelect();
    $("#query").click(function () {
        // alert("111");
        if($("#startTime").val()===""){
            layer.msg("输入开始时间！", {icon: 2});
            $("#endTime").val("");
        }
        var startTime = new Date($("#startTime").val().replace(/\-/g, "\/"));
        var endTime = new Date($("#endTime").val().replace(/\-/g, "\/"));
        if(startTime >=endTime){
            layer.msg("开始时间不能大于结束时间！", {icon: 2});
            $("#startTime").val("");
            $("#endTime").val("");
            return false;
        }else {
            load();
        }
    })
    var aa = $('#selectFarm', window.parent.document).find("option:selected").text();
    console.log(aa);
    //  fileName = aa.substring(31,aa.length);
    // console.log(fileName);
    startTime = $("#startTime").val();
    endTime = $("#endTime").val();

    var table = new tableFactory(startTime,endTime,aa);
})

//点击时间查询
function dateTiemSelect(){
    layui.use('laydate', function(){
        var laydate = layui.laydate;
        laydate.render({
            elem: '#startTime', //新增的日期
            type: 'month',//日期类型date表示年月日
            /*  trigger: 'click',//如果绑定的元素非输入框，则默认事件为：click*/
            theme: '#071f3a',//自定义主题
            min: '2014-1-1',//限制最小日期
            max: '2028-12-31'//限制最大日期
        });
        laydate.render({
            elem: '#endTime', //新增的日期
            type: 'month',
            theme: '#071f3a',//自定义主题
            ready: function(date){
                //console.log(date); //得到初始的日期时间对象：{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
            },
            /*change: function(value, date, endDate){ //日期时间被切换后的回调
                console.log(value); //得到日期生成的值，如：2017-08-18
                console.log(date); //得到日期时间对象：{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
                console.log(endDate); //得结束的日期时间对象，开启范围选择（range: true）才会返回。对象成员同上。
            }*/
            done: function(value, date, endDate){//选中之后的对调函数
                //得到日期生成的值，如：2017-08-18
                // console.log(date); //得到日期时间对象：{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0}
                //console.log(endDate); //得结束的日期时间对象，开启范围选择（range: true）才会返回。对象成员同上。
            }
        });
    });
}

//初始化加载曲线跟表格数据
function load(){
    var index = layer.load(1);
    var options=$("#cs option:selected");//获取id为"cs"的选中的项
    var date = new Array();//观测时间
    var pf = new Array();
    var wfMonth = new Array();
    var pfMonth = new Array();

    var farmid = $('#selectFarm', window.parent.document).val();//获取父页面的元素
    var p = {
        "startTime":$("#startTime").val(),
        "endTime":$("#endTime").val(),
        "farmid":farmid
    };
    if(options.val() == 1){
        $.ajax({
            url : "../algorithmAccuracyManage/selectShort",
            type : "get",
            contentType : "application/json",
            dataType : "json",
            data : p/*JSON.stringify(p)*/,//转换成字符串。后台使用了RequestBody注解
            success : function(data) {
                pf = data.pfList;
                wfMonth = data.newList;
                for(var i = 0;i<wfMonth.length;i++){
                    for(var j =0;j<pf.length;j++){
                        if(wfMonth[i].pfid == pf[j].pfid){
                            var s = {Pfname:pf[j].pfname,Datamonth:wfMonth[i].stimeStr,Rmse:wfMonth[i].rmse,Mae:wfMonth[i].mae,R_power:wfMonth[i].r_power,LookTime:'第'+wfMonth[i].intervalnum+'天'};
                            pfMonth.push(s);
                            break;
                        }
                    }
                }
                PfMonth = pfMonth;

                $("#algorithmAccuracy").bootstrapTable("load", PfMonth);
                layer.close(index);
            },
            error :function(){
                layer.msg("数据未找到！", {icon: 2});
            }
        });
    }
    if(options.val() == 2){
        $.ajax({
            url : "../algorithmAccuracyManage/selectTooShort",
            type : "get",
            contentType : "application/json",
            dataType : "json",
            data : p/*JSON.stringify(p)*/,//转换成字符串。后台使用了RequestBody注解
            success : function(data) {
                pf = data.pfList;
                wfMonth = data.newList;
                for(var i = 0;i<wfMonth.length;i++){
                    for(var j =0;j<pf.length;j++){
                        if(wfMonth[i].pfid == pf[j].pfid){
                            var s = {Pfname:pf[j].pfname,Datamonth:wfMonth[i].stimeStr,Rmse:wfMonth[i].rmse,Mae:wfMonth[i].mae,R_power:wfMonth[i].r_power,LookTime:'第'+wfMonth[i].intervalnum/60+'小时'};
                            pfMonth.push(s);
                            break;
                        }
                    }
                }
                PfMonth = pfMonth;

                $("#algorithmAccuracy").bootstrapTable("load", PfMonth);
                layer.close(index);
            },
            error :function(){
                layer.msg("数据未找到！", {icon: 2});
            }
        });
    }


}




//表格工厂
function tableFactory(startTime,endTime,fileNames) {
    var me = this;
    me.data = null;//有功功率
    me.windData = null;//电站信息
    var init = function () {
        $.when(me.getWindData()).then(function () {
            $("#algorithmAccuracy").bootstrapTable({
                method: 'get',				  //请求方式（*）
                striped: true,					  //是否显示行间隔色
                cache: false,					   //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                pagination: true,				   //是否显示分页（*）
                sortable: true,					 //是否启用排序
                sortOrder: "desc",				   //排序方式
                sidePagination: "client",		   //分页方式：client客户端分页，server服务端分页（*）
                pageNumber: 1,					   //初始化加载第一页，默认第一页
                search: true,					   //是否显示表格搜索，只能进行客户端搜索
                strictSearch: false,                //true为全匹配，false为模糊查询
                showColumns: true,				  //是否显示筛选列按钮
                showRefresh: true,			  //是否显示刷新按钮
                clickToSelect:true,				//是否启用点击选中行
                showToggle: false,					//是否显示详细视图和列表视图的切换按钮
                cardView: false,					//是否显示详细视图
                detailView: false,				   //是否显示父子表
                singleSelect: true,                //是否支持多选,false表示支持多选，true表示不支持
                //undefinedText: '_',              //当数据为undefined时显示的字符
                height: 'auto',
                pageSize: 20,
                pageList: [5,20,30],
                editable:true,//是否可以行内编辑
                showExport: true,//是否显示导出按钮
                exportDataType:'all',//导出全部
                exportTypes:[  'csv'], //导出文件类型
                export: 'glyphicon-export icon-share',
                exportOptions:{
                    // ignoreColumn: [0,1],  //忽略某一列的索引
                    fileName:startTime+"_"+endTime+"_"+fileNames,  //文件名称设置
                    // worksheetName: 'sheet1',  //表格工作区名称
                    // tableName: '总台帐报表',
                    //  excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],
                    // onMsoNumberFormat: DoOnMsoNumberFormat
                },
                columns: [{
                    title: '算法名称',
                    field: 'Pfname',
                    sortable: true,//排序
                    align: 'center',
                    valign: 'middle',
                    /*formatter: function (value, row, index) {

                    }*/
                },
                    {
                        title: '时间',
                        field: 'Datamonth',
                        sortable: true,//排序
                        align: 'center',
                        valign: 'middle',
                        /*formatter: function (value, row, index) {

                        }*/
                    },
                    {
                        title: '预报时效',
                        field: 'LookTime',
                        sortable: true,//排序
                        align: 'center',
                        valign: 'middle',
                        /*formatter: function (value, row, index) {

                        }*/
                    },
                    {
                        title: '功率预报准确率(%)',
                        field: 'Rmse',
                        sortable: true,//排序
                        align: 'center',
                        valign: 'middle',
                        formatter: function (value, row, index) {
                            return ((1-value)*100).toFixed(1);
                        }
                    },
                    {
                        title: '平均绝对百分比误差(%)',
                        field: 'Mae',
                        sortable: true,//排序
                        align: 'center',
                        valign: 'middle',
                        formatter: function (value, row, index) {
                            return (value*100).toFixed(1);
                        }
                    },
                    {
                        title: '功率相关性系数',
                        field: 'R_power',
                        sortable: true,//排序
                        align: 'center',
                        valign: 'middle',
                        formatter: function (value, row, index) {
                            return (value).toFixed(2);
                        }
                    },



                ],
                onEditableSave: function (field, row, oldValue, $el) {//编辑之后的事件
                    var p ={
                        id:row.fid,
                        power:row.power
                    }
                    $.ajax({
                        type: "post",
                        url: "../shortPeriodManage/edit",
                        data:p,//后台使用了实体类，前台就不能用Json.stringify
                        dataType: 'JSON',
                        success: function (data, status) {

                        },
                        error: function () {
                            alert('编辑失败');
                        },
                        complete: function () {

                        }
                    });
                }
            });
            //me.loadData();
            load();
        });
    }
    init();
}
tableFactory.prototype = {
    loadData: function () {
        var me = this;
        var index = layer.load(1);
        $.getJSON('../shortPeriodManage/selectAll', '', function (_data) {
            me.data = _data;
            $("#historicalData").bootstrapTable("load", _data);
            layer.close(index);
        })
    },
    //加载电站信息
    getWindData:function () {
        var me = this;
        $.getJSON('../windManage/selectAll', '', function (_data) {
            me.WindData = _data;
        })
    },
    getWindById: function (farmid) {
        var farmName = '';
        var me = this;
        $.each(me.WindData, function (index, item) {
            if (item.farmid === farmid) {
                farmName = item.farmname;
                return false;
            }
        });
        return farmName;
    },

    getRmse:function (pfname) {
        var rmse="";
        if(Rmse.length>0){
            $.each(Rmse, function (index, item) {
                var Pfname = item.Pfname;
                if(Pfname==pfname) {
                    if(item.Value == -1){
                        rmse = "无数据";
                        return false;
                    }else {
                        rmse = item.Value.toFixed(3);
                        return false;
                    }
                }
            });
            return rmse;
        }
    },

    getMae:function (pfname) {
        var rmse="";
        if(Mae.length>0){
            $.each(Mae, function (index, item) {
                var Pfname = item.Pfname;
                if(Pfname==pfname) {
                    if(item.Value == -1){
                        rmse = "无数据";
                        return false;
                    }else {
                        rmse = item.Value.toFixed(3);
                        return false;
                    }
                }
            });
            return rmse;
        }
    },

    getRr:function (pfname) {
        var rmse="";
        if(Rr.length>0){
            $.each(Rr, function (index, item) {
                var Pfname = item.Pfname;
                if(Pfname==pfname) {
                    if(item.Value == -1){
                        rmse = "无数据";
                        return false;
                    }else {
                        rmse = item.Value.toFixed(3);
                        return false;
                    }
                }
            });
            return rmse;
        }
    },

    getE_max:function (pfname) {
        var rmse="";
        if(E_MAX.length>0){
            $.each(E_MAX, function (index, item) {
                var Pfname = item.Pfname;
                if(Pfname==pfname) {
                    if(item.Value == -1){
                        rmse = "无数据";
                        return false;
                    }else {
                        rmse = item.Value.toFixed(3);
                        return false;
                    }
                }
            });
            return rmse;
        }
    }

}




